Project Analyzer
Detailed Version History

3.1.01 February 1997
       *** New features ***
       1. Lots of new metrics for complexity, understandability and
          reusability (see below)

       2. Name shadowing report (Report|Name shadowing)

       3. HTML reports for creating Intranet documentation

       New tool, Super Project Analyzer, released (see below)

       *** New metrics  ***
       - Comment to code, whitespace to code ratios
       - Informational fan-in x fan-out
       - Informational complexity
       - Nested conditionals
         See these metrics in 
         1. View|File metrics, View|Procedure metrics
         2. Report|Design quality report

       *** Enhancements to existing features ***
       1. Summary Report shows number of property procedures (Get/Let/Set)
          and lines of code/comment/whitespace. 
       2. File menu shows 4 last opened projects
       3. Problem report shows forms with ControlBox but without icon
          (good to have in Windows 95)
       4. File details and Procedure details windows show more details
       5. Options|Show hypertext on double click

       *** Modified features ***
       1. "Procedures with cyclomatic complexity >= 10" moved from
          Problem Report to View|Procedure metrics
       2. A part of Summary Report is now in Design quality report
       3. RTF reports in the unregistered version too
   
       *** Bug fixes ***
       1. Corrected another bug that caused *local* variables with type
          chars $#%!@& to show up on the Problem Report - Variables with
          no Type
       2. No more crashes when the (enhanced) Display window is resized to a
          small height
       3. Add-in events like ConnectAddIn are no longer "dead"
       4. FRX view reports (Metafile) correctly
       5. FRX view doesn't open before the corresponding .frm file has
          been analyzed
       6. Optional arguments and ParamArrays are no longer reported
          as "variables with no type" because they must always be Variants

       *** New tool - Super Project Analyzer ***

       Super Project Analyzer is a new tool for analyzing a "Super Project" 
       that consists of a number of VB projects that share some of their 
       files. Supert Projec Analyzer provides reports on which modules, 
       procedures and variables/constants are used by which projects, and
       which are left dead. It also reports cross-project reuse ratios.

       Super Project Analyzer requires Project Analyzer to work. 
       See the Tools menu. It is shareware, registration is $20. 

3.0.07 December 1996

       Enhancements
       1. "Optional" and "ParamArray" now precede those parameters on reports
       2. Summary Report enhanced:
          - Ordered differently
          - Maintainability: Average identifier length reported
          - VB 4.0: Project name table size removed (wasn't accurate)
          - VB 3.0: Global Symbol Table and Global Name Table sizes reported 
            more accurately, althought they are still just rought 
            approximations

       Bug fixes
       1. Corrected a bug that still caused variables with type chars $#%!@& 
          to show up on the Problem Report - Variables with no Type
       2. Corrected a bug that caused arrays to be ignored
       3. Added option /PFONT to help in situations where printer font
          changes after page break
       4. Fixed average source file age on Summary Report
       5. Understands variable assignments (a=b) after If...Then and
          If..Then...Else 

3.0.06 November 1996

       New feature
       1. Summary Report shows largest-smallest file, newest-oldest file
          and average source file age

       Enhancements
       1. Knows DefType statements and sets variable types accordingly
       2. Knows variable type chars $#%!@&    (no, I'm not swearing :-)
       3. Problem Report - Variables with no type: only lists those
          variables that are not affected by an As Type or a DefType statement
       4. Hypertext screen can now display an unlimited number of references 
          and assignments to a variable or constant

       Bug fixes
       1. Shouldn't change font after heading on printed reports
       2. Error handler in Needless globals report

3.0.05 Enhancement
       1. You can now set the limit in View Cyclomatic Complexities and
          View Nested Loops dialog box

       Bug fix
       1. Sub Main should not be "dead" 

3.0.04 New feature
       1. Report|File call tree

       Bug fix
       1. Right-click in the hypertext window will show all references,
          not just one it used to in some cases

3.0.03 New features
       1. Problem report shows variables without a type (implicit variants)

       Enhancements
       1. Project Analyzer remembers the last used project directory

       Bug fixes
       1. Sub Main is not "dead"
       2. Sub Main is not "unneeded global"
       3. "Dim Prem As String" is not considered as "Dim P : Rem As String"
          any more :-) 
       4. Won't crash when minimizing the main window with a report open
       5. Corrected a bug that caused errors when seeing multiple reports
          on the screen

3.0.02 Minor changes

3.0.01 Official release
       New feature
       1. Edit|Copy in the Hypertext window puts the procedure on 
          the Clipboard

       Bug fixes
       1. Another "Subscript out of range" at the end of analysis phase 1
       2. Heading 3 works in RTF reports with MS Word
       3. Maximum length of names (var, const, procedure) increased 
          from 40 to 64 characters

2.9.12 Enhancements
       1. Enhanced reports to printer 
       2. Printer setup dialog
       3. RTF reports look better now. (Checked with MS Word and WordPad)
          The "RTF Editor is MS Word" option creates RTF optimized for
          MS Word, with Styles enabled => You can easily create a Table of
          Contents in Word with a couple of mouse clicks.

       Bug fixes
       1. Saves Bold and Italic settings for printer font
       2. Needless globals report works correctly
       3. Dead procedures in Project Report reported correctly
       4. Fixed a bug with "RTF Editor is MS Word" that caused Word to
          show error messages and start instead of editors associated
          with .txt and .wri

2.9.11 Bug fix
       1. Fixed "An error occurred in showing procedures/Out of memory" 
          at the end of phase 1/2
       New feature
       1. Ability to set printer font

2.9.10 Bug fixes
       1. Fixed "This array is fixed or temporarily locked"
       2. Counts While..Wend as a Nested Loop
       3. Interprets procedure-level 
          ReDim MyArray(MyFunc(123)) correctly
       4. Understands As New Type
       5. If MyTable is a module-level dynamic array, then
          ReDim Preserve MyTable(123) refers to that array

2.9.09 Bug fixes
       1. Corrected a bug that caused references to 
          MyClass.MyProcedure to be ignored if MyClass was a 
          procedure-level variable
       2. Now understands the difference between property Let/Set and Get
          better. MyClass.MyProp = MyClass.MyProp is interpreted correctly, 
          but not with subscript: MyClass(1).MyProp = MyClass(1).MyProp
       3. MyClass(1).MyProcedure is correctly found to be a call to 
          MyProcedure in class module MyClass, even when subscripted.
       4. References and assignment to class variables were pointing 
          at wrong classes
       New debug feature: if an error occurs during analysis, may 
          dump 4 files including debug info:
          errproc.lst, errgproc.lst, errpdecl.lst, errident.lst

2.9.08 New features

       1. Print a call tree report in any expand/collapse
          state (from View|Call tree)
       2. Understands the difference between variable
          assignment and reference
       3. "Dead" variables and constants are those that are not referenced.
          So variables that are assigned to but never used show up as dead.
       4. Hypertext window: Right click on a hyperlink 
          brings up a popup menu with links to where
          the item is referenced or assigned to!
       5. Vars & consts list: View references brings up
          a detailed reference & assignment list
       6. Counts nested loops in a procedure (View|Nested loops)
       7. VB 4.0: Shows project name and version at the bottom of a report

       Bug fixes
       1. Shouldn't crash under Win NT
       2. Understands the difference between Property Let and
          Get and Set, and sets hyperlinks correctly
       3. Cyclomatic complexities now correct in Problem Report
          and Summary Report (increased by one)
       4. Undestands ByRef, Optional and ParamArray parameters

2.9.07 Corrected many clever bugs that have cost many lives of 
         "dead" procedures & variables.
       New feature: View cyclomatic complexities
       Now correctly interprets "Private/Global/Public Declare Function"
       "Private Type" is no more considered a variable named "Type"
       "Redim Preserve" is no more considered an array named "Preserve"
       Phase 2 is now faster
       Find procedure works in the main window
       Non-enhanced display output works in the 32-bit version
       Added 3 command line switches to help debugging the 32-bit version 
         on Windows NT:
           /NOTMP32    Don't call GetTempFilename in KERNEL32.DLL
           /NOUSER32   Don't call USER32.DLL
           /NOSHELL32  Don't call SHELL32.DLL
2.9.06 Corrected stupid bugs that caused some variables & procedures to
         appear "dead":
       * Modules with only one procedure are now analyzed in Phase 2 too
       * Type characters $%!#@& are not part of a name:
         this means that myvar=2 is now correctly interpreted as a 
         reference to myvar%
2.9.05 Corrected a stupid bug that caused all global variables to appear
         "dead"
2.9.04 Correctly parses indented declarations, like "    Dim xyz"
       Corrected "Subscript out of range" at the end of phase 1/2
       Remembers the position of each window
       Remembers the setting of "Dull gray windows" 
       Added Collapse and Expand buttons to the call trees
       File details window shows if a variable/constant is dead or not
       New statistics at the bottom of the main window
       Notifies if a table has exceeded 32767 entries (16-bit version)
          May only happen with extremely large projects, never seen
          this. If you experience this, please let me know.
          In the 32-bit version this is not a problem
       Archiving in the 32-bit version handles filenames with 
          characters >= Chr(128) correctly
       Procedure list on the main window now sorted in VB 4.0 too
2.9.03 Doesn't require PROJECT.DLL on the disk
       Won't crash on ReDim
2.9.02 Now 2 separate versions
          1. 32-bit version works with VB 3.0 and 4.0 (all versions)
          2. 16-bit version works with VB 3.0 and 4.0 (16-bit)
       Report|Needless globals report
       Most registered features now work in the shareware version 
          provided you are analyzing a project with at most 10 basic
          files.
       Now correctly interprets words "Private" and "Public"
       Shows procedure attributes as comments
       FRX view detects Bitmaps, Icons, Metafiles and Cursors
2.9.01 Initial beta accepting VB 4.0 code
       Accepts Class Modules (.CLS files) [VB40]
       Hypertext shows local variables & constants, 
       Hypertext shows class module references  [VB40]
       Hypertext shows dead variables by overstriking

Recent changes to v2.1:
       Formatted output on the screen & printer
       Hypertext jumps directly to variable/const declaration, 
         even in the Vars/consts listbox

